#define  _CRT_SECURE_NO_WARNINGS


#include<stdio.h>

//int* swap(int* a, int* b)
//{
//	int* p;
//	p = a; a = b; b = p;
//	return a;
//}
//int main()
//{
//	int x = 3;
//	int y = 4;
//	int z = 5;
//	swap(swap(&x, &y), (&z));
//	printf("%d %d %d\n", x, y, z);
//
//	return 0;
//}


//int fun(int i, int k)
//{
//	if (k == 1 || k == i)
//		return 1;
//	int ret = fun(i - 1, k - 1) + fun(i - 1, k);
//	return ret;
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	n += 1;
//	int i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		int j = 0;
//		for (j = 1; j < n; j++)
//		{
//			printf(" ");
//		}
//		int k = 0;
//		for (k = 1; k <= i; k++)
//		{
//			printf("%3d\t", fun(i, k));
//		}
//		printf("\n");
//	}
//
//	return 0;
//}



//int main()
//{
//	printf("  Nine-by-nine Multiplication Table\n");
//	printf("--------------------------------------\n");
//	printf("     1   2   3   4   5   6   7   8   9\n");
//	printf("--------------------------------------\n");
//
//
//	return 0;
//}

#include<stdlib.h>


int cmp_int(const void* e1, const void* e2)
{
	return *(int*)e2 - *(int*)e1;
}
int main()
{
	int n, m;
	scanf("%d %d", &n, &m);
	int arr[100];
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	qsort(arr, n, sizeof(int), cmp_int);
	int j = 0;
	for (j = 0; j < m; j++)
	{
		printf("%d ", arr[j]);
	}

	return 0;
}